//
//  EmojiTextAttachment.swift
//  1-自定义键盘搭建
//
//  Created by yellow on 15/10/26.
//  Copyright © 2015年 yellow. All rights reserved.
//

import UIKit

//自定义 NSAttachment 子类，增加唯一的属性emoji,使得在将界面上显示图片，但是能够拿到完整的文本字符串时，可以将图片转换为对应的文字
class EmojiTextAttachment: NSTextAttachment {
    
    var emoji:Emoji
    
    init(emoji em:Emoji){
        self.emoji = em
        super.init(data: nil, ofType: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    /// 将当前附件中的 emoticon 转换成属性文本
    func imageText(font:UIFont)->(NSAttributedString){
        image = UIImage(contentsOfFile: emoji.imagePath)
        //让图片和文字等高
        let lineHeight = font.lineHeight
        //实际上bounds的xy是可以设置的（scrollView 的 contentOffset 的值是个计算型属性，里面就是bounds）
        bounds = CGRectMake(0, -4, lineHeight, lineHeight)
        
        let imageAttrStr = NSMutableAttributedString(attributedString:NSAttributedString(attachment: self))
        //添加属性文本的字体属性，新实例化了一个 NSAttributedString，但是没有设置改文本的初始字体属性，就会造成插入文本之后，字体大小会变化
        imageAttrStr.addAttribute(NSFontAttributeName, value:font, range: NSRange(location: 0, length: 1))
        return imageAttrStr
    }
}
